ALTER TABLE DESIGNATIONS ALTER TEXTE TYPE VARCHAR(60);
CREATE PROCEDURE "GET_PURGE"
(
"TYPEPURGE" SMALLINT,
"RCH_TEMP" SMALLINT
)
RETURNS
(
"INDXOUT" INTEGER,
"DESI" VARCHAR(60)
)
AS
BEGIN
IF (TYPEPURGE=1) THEN
FOR SELECT INDX,NOM||' '||PRENOM FROM CLIENTS WHERE TEMP=:RCH_TEMP ORDER BY NOM INTO :INDXOUT,:DESI DO SUSPEND;
ELSE IF (TYPEPURGE=2) THEN
FOR SELECT INDX,NOM||' '||PRENOM FROM FOURNISSEURS WHERE TEMP=:RCH_TEMP ORDER BY NOM INTO :INDXOUT,:DESI DO SUSPEND;
ELSE IF (TYPEPURGE=3) THEN
FOR SELECT INDX,D.TEXTE FROM ARTICLES A LEFT JOIN DESIGNATIONS D ON D.INDXART=A.INDX AND CODELANGUE=1 WHERE TEMP=:RCH_TEMP ORDER BY 2 INTO :INDXOUT,:DESI DO SUSPEND;
END
;
CREATE PROCEDURE "GET_DESIGNATION"
(
"INDX" INTEGER,
"CODELANGUE" SMALLINT
)
RETURNS
(
"TEXTE" VARCHAR(60),
"RCODE" SMALLINT
)
AS
DECLARE VARIABLE V1 SMALLINT;
BEGIN
RCODE = :CODELANGUE;
SELECT COUNT(*) FROM DESIGNATIONS D WHERE D.INDXART=:INDX AND D.CODELANGUE=:RCODE INTO V1;
IF (V1 = 0) THEN
BEGIN
RCODE = 1;
SELECT COUNT(*) FROM DESIGNATIONS D WHERE D.INDXART=:INDX AND D.CODELANGUE=1 INTO V1;
END
SELECT TEXTE FROM DESIGNATIONS D WHERE D.INDXART=:INDX AND D.CODELANGUE=:RCODE INTO :TEXTE;
SUSPEND;
END
;
CREATE PROCEDURE "INTERROGATION_PONTA"
(
"DATEDEB" DATE,
"DATEFIN" DATE,
"DETAIL_VERSEMENTS" SMALLINT,
"DETAIL_TVA" SMALLINT,
"DETAIL_TVA_PORT" SMALLINT,
"DETAIL_HT" SMALLINT
)
RETURNS
(
"DATEPIECE" TIMESTAMP,
"NOPIECE" VARCHAR(15),
"NOLIGNE" SMALLINT,
"INFO1" VARCHAR(15),
"INFO2" VARCHAR(15),
"LIBELLE" VARCHAR(85),
"DEBIT" DECIMAL(12, 2),
"CREDIT" DECIMAL(12, 2),
"ESTPAYE" CHAR(1),
"ESTESP" CHAR(1),
"INDX" INTEGER,
"BLOBLIGNE" BLOB SUB_TYPE 1 SEGMENT SIZE 80
)
AS
DECLARE VARIABLE TTC DECIMAL(12,2);
DECLARE VARIABLE M1 DECIMAL(15,2);
DECLARE VARIABLE TVA DECIMAL(12,2);
DECLARE VARIABLE HT DECIMAL(12,2);
DECLARE VARIABLE NOTIERS INTEGER;
DECLARE VARIABLE ST VARCHAR(200);
DECLARE VARIABLE TYPEPIECE VARCHAR(35);
DECLARE VARIABLE TYPEVERS VARCHAR(35);
DECLARE VARIABLE TAUX DECIMAL(6,2);
DECLARE VARIABLE TAUXTVA INTEGER;
DECLARE VARIABLE TVAPORT INTEGER;
DECLARE VARIABLE PORT DECIMAL(12,2);
DECLARE VARIABLE I INTEGER;
DECLARE VARIABLE REDUC DECIMAL(5,2);
BEGIN
FOR SELECT P.INDX,P.DATEPIECE,P.NOPIECE,P.TOTALTVA,P.TOTALTTC,P.NOTIERS,P.TVAPORT,
P.PORT,P.PCREDUC+P.PCESCOMPTE,
T.COMPTGENE,T.COMPTAUXI,C.DESIGNATION
FROM PIECES P
LEFT JOIN FOURNISSEURS T ON T.INDX=P.NOTIERS
LEFT JOIN CHAINES C on (c.TYPEC=0) AND (c.LIGNE=p.TYPEPIECE) AND (C.COLONNE=0)
WHERE P.TOTALTTC<>0 AND P.DATEPONT IS NULL AND P.DATEPIECE>=:DATEDEB
AND P.DATEPIECE<:DATEFIN AND TYPEPIECE IN (13,14)
ORDER BY P.DATEPIECE
INTO :INDX,:DATEPIECE,:NOPIECE,:TVA,:TTC,:NOTIERS,:TVAPORT,:PORT,:REDUC,
:INFO1,:INFO2,:TYPEPIECE DO
BEGIN
HT = TTC - TVA;
NOLIGNE=1;
IF (INFO1 IS NULL OR INFO1='') THEN INFO1='401000';
SELECT SUM(MONTANT) FROM VERSEMENTS WHERE INDEXPIECE=:INDX INTO :M1;
IF (TTC=M1) THEN ESTPAYE = 'O'; ELSE ESTPAYE = 'N';
SELECT SUM(MONTANT) FROM VERSEMENTS WHERE INDEXPIECE=:INDX AND TYPEV=0 INTO :M1;
IF (TTC=M1) THEN ESTESP = 'O'; ELSE ESTESP = 'N';
IF (NOTIERS>0) THEN SELECT AVALUE FROM GET_NOM_FOUR(:NOTIERS) INTO :ST;
ELSE ST = 'N░ ' || NOPIECE;
/* LIGNE 1 (Montant TTC) */
IF (DETAIL_VERSEMENTS<>0) THEN
BEGIN
/* DΘtailler les versements */
FOR SELECT C.DESIGNATION,V.MONTANT FROM VERSEMENTS V
LEFT JOIN CHAINES C on (c.TYPEC=22) AND (c.LIGNE=V.TYPEV) AND (C.COLONNE=0)